A cluster is a group of independent computing nodes connected by a high-speed communications link. Each computing node has one or more processes where each process has its own address space. Each process can access data that is associated with a file system that exists in the cluster. The file system can be resident in the node associated with the process or in another node within the cluster.
The cluster has a global name space which represents the file systems accessible to each node within the cluster. Each node may also have a local name space representing the file systems accessible to processes associated with a particular node. A user associated with a particular node can mount or connect a file system local to one node into the global name space. Furthermore, a user can unmount or disconnect a file system from the global name space thereby making the file system inaccessible to each node in the cluster.
It is beneficial for each node to have a single system image of the global name space. However, maintaining this image is complicated by issues of coherency, resource location, and transparency. Coherency must be achieved in mounting and unmounting a file system at the same mount point within the cluster and at the same point in time. Otherwise, each node can mount a file system at a different mount point or access an unmounted file.
From the view point of users issuing mount and unmount commands, the existence of the global name space should be as transparent as possible. This transparency will minimize the changes required to the interface of the mount and unmount command as well as to user application programs and data.
Furthermore, in some instances the resources needed to mount a file system are not always accessible from all nodes in the cluster. This can affect the mount of a file system initiated from one node when the resources associated with the file system are best accessed from another node. In order to perform the mount task, it becomes necessary to overcome this obstacle.
Accordingly, there exists a need to maintain a global name space in a distributed computing environment in a manner that accounts for the aforementioned constraints.